"""
考虑如下形式的⼆次丢番图⽅程：
x2 – Dy2 = 1
举例⽽⾔，当D=13时，x的最⼩值出现在649 – 13×180 = 1。可以断定，当D是平⽅数时，
这个⽅程不存在正整数解。
对于D= {2, 3, 5, 6, 7}分别求出x取最⼩值的解，我们得到：
3^2 – 2×2^2 = 1
2^2 – 3×1^2 = 1
9^2 – 5×4^2 = 1
5^2 – 6×2^2 = 1
8^2 – 7×3^2 = 1
因此，对于所有D ≤ 7，当D=5时x的最⼩值最⼤。
对于D ≤ 1000，求使得x的最⼩值最⼤的D值。
"""
import math
def com_squre(n):
    if n<1:
        return False
    else:
        if(int(math.sqrt(n))**2==n):
            return True
        else:
            return False
    

max_x=0
max_d=0
d=2
y=1
while d<=100:
    if com_squre(d):
        d+=1
    else:
        while True:
            result=1+d*(y**2)
            if com_squre(result)==True:
                if math.sqrt(result)>max_x:
                    max_x=math.sqrt(result)
                    max_d=d
                y=1
                break
            else:
                y+=1
        
        d+=1
print(max_d)